Add support for fused Q Up-Proj GEMM/RoPE/Quant. - #3303
Open
chaseblock wants to merge 2 commits into
Open
Conversation
This commit add support for fusing the GEMM in the Q Up Proj step of DeepseekV3 training with the following RoPE and MXFP8 quantization operations. This uses a custom kernel from cudnn_frontend, and supports both 16-bit projection and mxfp8 projection.
for more information, see https://pre-commit.ci
Contributor
Greptile SummaryThe PR introduces an exported wrapper for a cuDNN fused MLA Q up-projection, RoPE, and MXFP8 quantization operation, while extending fused attention to accept prequantized MXFP8 Q/K/V and optionally emit BF16 gradients.
Confidence Score: 5/5The PR appears safe to merge based on the reviewed changes, with no concrete blocking or independently actionable non-blocking defect established. The new MXFP8 layout transformations follow the established fast-path conventions, the BF16-gradient option is consistently forwarded through direct and checkpointed fused-attention paths, and no reachable changed-code failure remains. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart LR
X["Q low-rank activation"] --> F["Fused Q up-projection + RoPE"]
W["BF16 or MXFP8 weight"] --> F
C["RoPE cosine/sine"] --> F
F --> Q["Prequantized MXFP8 Q"]
K["K activation"] --> KV["MXFP8 quantization"]
V["V activation"] --> KV
Q --> S["BHSD scale transpose + swizzle"]
KV --> S
S --> A["cuDNN fused attention"]
A --> B["BF16 dQ/dK/dV when requested"]
Reviews (1): Last reviewed commit: "[pre-commit.ci] auto fixes from pre-comm..." | Re-trigger Greptile |
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds support for fusing the GEMM in the Q Up Proj step of DeepseekV3 training with the following RoPE and MXFP8 quantization operations. This uses a custom kernel from cudnn_frontend, and supports both 16-bit projection and mxfp8 projection.
Type of change
Checklist: